{
	"env": {
		"browser": true,
		"es2021": true
	},
	"root": true,
	"extends": [
		"eslint:recommended",
		"plugin:vue/vue3-recommended",
		"plugin:vue-scoped-css/vue3-recommended",
		"plugin:@typescript-eslint/recommended"
	],
	"overrides": [
		{
			"files": [
				"*.vue"
			],
			"rules": {
				"indent": [
					"error",
					"tab"
				]
			}
		}
	],
	"settings": {
		"import/resolver": {
			"alias": {
				"map": [
					[
						"@",
						"./src"
					]
				],
				"extensions": [
					".ts",
					".vue",
					".js",
					".jsx",
					".json"
				]
			}
		}
	},
	"parser": "vue-eslint-parser",
	"parserOptions": {
		"parser": "@typescript-eslint/parser",
		"ecmaVersion": "latest",
		"sourceType": "module"
	},
	"rules": {
		"vue/multi-word-component-names": "off",
		"vue/v-on-event-hyphenation": "off",
		"vue/no-mutating-props": "off",
		"vue/no-unused-vars": "error",
		"vue-scoped-css/require-selector-used-inside": "off",
		"vue/first-attribute-linebreak": [
			"error",
			{
				"singleline": "beside",
				"multiline": "below"
			}
		],
		"vue-scoped-css/enforce-style-type": [
			"warn",
			{
				"allows": [
					"scoped",
					"module"
				]
			}
		],
		"vue/custom-event-name-casing": [
			"warn",
			"camelCase"
		],
		"vue/prop-name-casing": [
			"warn",
			"snake_case"
		],
		"vue/component-name-in-template-casing": [
			"warn",
			"PascalCase"
		],
		"vue/define-macros-order": [
			"warn",
			{
				"order": [
					"defineEmits",
					"defineProps"
				]
			}
		],
		"vue/no-setup-props-destructure": "off",
		"indent": [
			"error",
			"tab"
		],
		"linebreak-style": [
			"error",
			"unix"
		],
		"quotes": [
			"error",
			"single"
		],
		"semi": [
			"error",
			"always"
		],
		"sort-imports": [
			"error",
			{
				"ignoreCase": true,
				"ignoreDeclarationSort": false,
				"ignoreMemberSort": false,
				"memberSyntaxSortOrder": [
					"none",
					"all",
					"multiple",
					"single"
				],
				"allowSeparatedGroups": true
			}
		],
		"no-multi-spaces": "error",
		"key-spacing": [
			"warn",
			{
				"beforeColon": false,
				"afterColon": true,
				"mode": "strict"
			}
		],
		"keyword-spacing": [
			"warn",
			{
				"after": true,
				"before": true
			}
		],
		"comma-spacing": [
			"warn",
			{
				"after": true,
				"before": false
			}
		],
		"arrow-spacing": [
			"warn",
			{
				"after": true,
				"before": true
			}
		],
		"space-before-blocks": [
			"warn",
			"always"
		],
		"space-in-parens": [
			"warn",
			"never"
		],
		"object-curly-spacing": [
			"warn",
			"always"
		],
		"space-before-function-paren": [
			"warn",
			{
				"anonymous": "always",
				"named": "never",
				"asyncArrow": "always"
			}
		],
		"semi-spacing": [
			"warn",
			{
				"before": false,
				"after": true
			}
		],
		"prefer-const": "error",
		"padding-line-between-statements": [
			"error",
			{
				"blankLine": "always",
				"prev": "*",
				"next": "return"
			},
			{
				"blankLine": "always",
				"prev": "*",
				"next": "block-like"
			},
			{
				"blankLine": "always",
				"prev": "block-like",
				"next": "*"
			}
		],
		"no-await-in-loop": "error",
		"no-extra-parens": "error",
		"no-prototype-builtins": "error",
		"no-template-curly-in-string": "error",
		"no-trailing-spaces": "error",
		"valid-jsdoc": "error"
	}
}